其他
不可不知的三种缓冲类型
缓冲
全缓冲
博客:https://www.yanbinghu.com
buff.c*/
#include<stdio.h>
#include<unistd.h>
int main(void)
{
/*以可读可写的方式打开*/
FILE *fp = fopen("./test.txt","w+");
if(NULL == fp)
{
perror("open file failed");
return -1;
}
/*写入内容*/
char buf[] = "wechat:shouwangxiansheng\n";
fwrite(buf,sizeof(char),sizeof(buf),fp);
//fflush(fp);
/*sleep一段时间,以便观察*/
sleep(20);
fclose(fp);
return 0;
}
$ ./buff
wechat:shouwangxiansheng
行缓冲
博客:https://www.yanbinghu.com
lineBuff.c*/
#include<stdio.h>
#include<unistd.h>
int main(void)
{
printf("wechat:shouwangxiansheng");
sleep(10);
return 0;
}
$ ./lineBuff
不带缓冲
博客:https://www.yanbinghu.com
noBuff.c*/
#include<stdio.h>
#include<unistd.h>
int main(void)
{
fprintf(stderr,"wechat:shouwangxiansheng");
sleep(10);
return 0;
}
总结
通常磁盘上的文件是全缓冲区的 标准输入和标准输入通常是行缓冲的 指向终端设备的流通常是行缓冲,而指向文件时,则是全缓冲 为了尽可能显示错误信息,标准错误是不带缓冲的
相关精彩推荐